import Storage from 'good-storage'

// 根据不同类型的文件获取不同类型文件的图标
export function GetFileIcon(ext) {
    const files = {
        ".docx": "doc.png",
        ".doc": "doc.png",
        ".xls": "xls.png",
        ".xlsx": "xls.png",
        ".csv": "xls.png",
        ".ppt": "ppt.png",
        ".pptx": "ppt.png",
        ".md": "md.png",
        ".pdf": "pdf.png",
        ".sql": "sql.png",
        ".mp3": "mp3.png",
        ".wav": "mp3.png",
        ".mp4": "mp4.png",
        ".avi": "mp4.png",
    }
    if (files[ext]) {
        return '/images/ext/' + files[ext]
    }
    return '/images/ext/file.png'
}

// 获取文件类型
export function GetFileType(ext) {
    // 移除扩展名中的第一个 . 符号。
    // 把扩展名转成大写
    return ext.replace('.','').toUpperCase()
}

// 将文件大小转成字符
// bytes：表示文件大小的字节数，类型为 number
export function FormatFileSize(bytes) {
    if (bytes === 0) {return '0 Bytes'}
    // 使用二进制单位（1 KiB = 1024 Bytes），区别于十进制（1 KB = 1000 Bytes）
    const k = 1024
    // 存储单位名称，覆盖从字节（Bytes）到拍字节（PiB）的常见范围
    const size = ['Bytes','KiB','MiB','GiB','TiB','PiB']
    // Math.log(k) 计算基数 1024 的自然对数。
    // Math.floor 向下取整，确保单位索引 i 不越界
    // 输入 bytes = 2048 → log(2048)/log(1024) = 1 → i = 1（对应 KiB）
    const i = Math.floor(Math.log(bytes) / Math.log(k))
    // Math.pow(k, i) 计算 k 的 i 次幂，用于将字节数转换为目标单位（如 1024^2 对应 MiB）
    // toFixed() 控制小数精度为两位，确保结果易读
    // 计算实际大小：bytes / Math.pow(k, i)，将字节数转换为对应单位的值（如 2048 Bytes → 2 KiB）
    return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + size[i]
}

// 设置路由
export function setRoute(path) {
    Storage.set(import.meta.env.VITE_VUE_APP_KEY_PREFIX + 'ROUTE_',path)
}

// 获取路由
export function getRoute() {
    return Storage.get(import.meta.env.VITE_VUE_APP_KEY_PREFIX + 'ROUTE_')
}